package src.CodeTop;

public class TestListNode {
    /**
     * 生成n个结点的链表，
     * @param n 生成的结点个数
     * @param arr 结点存放的数值，用数组方式存储
     * @return 链表头结点
     */
    public static ListNode generateLinkedList(int n, int[] arr) {
        // 传入的数值数组的索引
        int index = 0;
        // 生成头结点
        ListNode head = new ListNode(arr[index]);
        // 遍历指针
        ListNode p = head;
        // 数组索引自增
        index++;
        // 循环生成链表结点并赋值
        for (int i = index ; i < n ; i++) {
            // 生成当前结点
            ListNode temp = new ListNode(arr[index]);
            // 将当前结点尾插到原链表中
            p.next = temp;
            // 遍历指针后移
            p = p.next;
            // 数组索引自增
            index++;
        }
        // 将最后一个结点的下一个结点置空
        p.next = null;
        // 返回头结点
        return head;
    }

    /**
     * 遍历链表
     * @param head 头结点
     */
    public static void showLinkedList(ListNode head) {
        // 定义遍历指针
        ListNode temp = head;
        while (temp != null) {
            System.out.print(temp.val + " -> ");
            temp = temp.next;
        }
    }
}
